import { z } from 'zod';

export function getPermissionFormSchema(mode = 'create') {
  return z.object({
    name:
      mode === 'create'
        ? z
            .string({ required_error: '权限标识为必填项' })
            .min(3, '权限标识至少需要3个字符')
            .max(100, '权限标识长度不能超过100个字符')
        : z
            .string()
            .min(3, '权限标识至少需要3个字符')
            .max(100, '权限标识长度不能超过100个字符'),
    displayName: z
      .string({ required_error: '权限名称为必填项' })
      .min(2, '权限名称至少需要2个字符')
      .max(100, '权限名称长度不能超过100个字符'),
    resource: z
      .string({ required_error: '所属模块为必填项' })
      .min(1, '所属模块不能为空')
      .max(50, '所属模块长度不能超过50个字符'),
    action: z
      .string({ required_error: '动作类型为必填项' })
      .min(1, '动作类型不能为空')
      .max(50, '动作类型长度不能超过50个字符'),
    category: z
      .string()
      .max(50, '分类长度不能超过50个字符')
      .optional()
      .or(z.literal('')),
    sortOrder: z
      .number({ invalid_type_error: '排序值必须为数字' })
      .int('排序值必须为整数')
      .min(0, '排序值不能小于0')
      .max(9999, '排序值不能超过9999')
      .optional(),
    description: z
      .string()
      .max(2000, '描述长度不能超过2000个字符')
      .optional()
      .or(z.literal('')),
  });
}


